package com.dearbinge.data.dao;

import com.baomidou.mybatisplus.plugins.Page;
import com.dearbinge.data.pojo.commodity.CommodityMessage;
import org.apache.ibatis.annotations.Param;
import org.mapstruct.Mapper;

import java.util.List;
/**
 * 商品信息 dao层
 *
 * @author wes
 * @date 2019/1/12
 */
@Mapper
public interface CommodityMessageMapper {

    /**
     * 商品信息增加
     * @param commodityMessage 商品信息
     * @return 结果提示
     */
    Integer insert(CommodityMessage commodityMessage);

    /**
     * 商品信息修改
     * @param commodityMessage 商品信息
     * @return 结果提示
     */
    Integer update(CommodityMessage commodityMessage);

    /**
     * 根据id查询商品信息
     * @param id id
     * @return 商品信息
     */
    CommodityMessage getById(Integer id);

    /**
     * 根据id查询商品信息 （包含下架 删除）
     * @param id id
     * @return 商品信息
     * @author cl
     */
    CommodityMessage getCommodityById(Integer id);

    /**
     * 删除商品信息动态
     * @param id 主键id
     * @return 结果
     */
    Integer deleteCommodityMessage(@Param("id")Integer id);


    /**
     * 分页根据商品类目查询商品集
     * @param categoryId 商品类目
     * @param lastId 最后一个id
     * @param page 分页
     * @return 商品集
     */
    List<CommodityMessage> listCommodityByCategory(@Param("categoryId")String categoryId,@Param("lastId") Integer lastId, Page page);

    /**
     * 统计分页根据商品类目查询商品集总数
     * @param categoryId 商品类目
     * @return 商品集
     */
    Integer countCommodityByCategory(@Param("categoryId") String categoryId);

    /**
     * 查询店铺上下架宝贝数量
     * @param commodityShopId 店铺id
     * @param commodityStatus 上下架状态
     * @return 宝贝数量
     */
    int countByShopIdAndStatus( @Param("commodityShopId") String commodityShopId,@Param("commodityStatus")Boolean commodityStatus);

    /**
     * 查询上下架的商品
     *
     * @param userId          用户id
     * @param commodityStatus 上下架状态
     * @param page        分页
     * @return 商品集合
     */
    List<CommodityMessage> listByCommodityStatus(@Param("userId") String userId, @Param("commodityStatus")Boolean commodityStatus, Page page);


    /**
     * 统计上下架的商品数
     * @param userId          用户id
     * @param commodityStatus 上下架状态
     * @return 总数
     */
    Integer countByCommodityStatus(@Param("userId") String userId,@Param("commodityStatus") Boolean commodityStatus);

    /**
     * 修改商品上下架
     *
     * @param commodityStatus 商品状态 （0下架 1上架）
     * @param commodityId 商品id
     * @return 影响行数
     */
    Integer updateCommodityStatus(@Param("commodityId") Integer commodityId,@Param("commodityStatus") Boolean commodityStatus);
}
